`ifndef _ral_reg_REG_PRJ_sys_status_base_status_rtl_
`define _ral_reg_REG_PRJ_sys_status_base_status_rtl_

`include "vmm_ral_ro_field_rtl.sv"
`include "vmm_ral_notifier_rtl.sv"


module ral_reg_REG_PRJ_sys_status_base_status_rtl(input  clk,
                               input  rstn,
                               input  [31:0] hst_wdat,
                               output [31:0] hst_rdat,
                               input  [3:0] hst_sel,
                               input  hst_wen,
                               input  [1:0] mode_in,
                               output mode_rd,
                               input  [19:0] kernel_size_in,
                               output kernel_size_rd,
                               input  [2:0] stride_in,
                               output stride_rd);

wire [1:0] mode_out;
vmm_ral_ro_field_rtl #(2)
   mode(clk, rstn, mode_in, mode_out);

wire [19:0] kernel_size_out;
vmm_ral_ro_field_rtl #(6)
   kernel_size_5_0(clk, rstn, kernel_size_in[5:0], kernel_size_out[5:0]);

vmm_ral_ro_field_rtl #(8)
   kernel_size_13_6(clk, rstn, kernel_size_in[13:6], kernel_size_out[13:6]);

vmm_ral_ro_field_rtl #(6)
   kernel_size_19_14(clk, rstn, kernel_size_in[19:14], kernel_size_out[19:14]);

wire [2:0] stride_out;
vmm_ral_ro_field_rtl #(2)
   stride_1_0(clk, rstn, stride_in[1:0], stride_out[1:0]);

vmm_ral_ro_field_rtl #(1)
   stride_2_2(clk, rstn, stride_in[2:2], stride_out[2:2]);


vmm_ral_notifier_rtl _n_mode(clk, rstn, hst_sel[0], hst_wen, mode_rd, /*open*/);
vmm_ral_notifier_rtl _n_kernel_size(clk, rstn, hst_sel[0], hst_wen, kernel_size_rd, /*open*/);
vmm_ral_notifier_rtl _n_stride(clk, rstn, hst_sel[0], hst_wen, stride_rd, /*open*/);


assign hst_rdat[31:0] = { stride_out, kernel_size_out, mode_out };


endmodule

`endif
